package com.boarsoft.boar.soagov.nexus;

import java.util.List;
import java.util.Map;

import com.boarsoft.bean.ReplyInfo;
import com.boarsoft.boar.entity.SoaNexus;
import com.boarsoft.common.dao.PagedResult;

public interface NexusBiz {
	/**
	 * 删除关系
	 * 
	 * @param id
	 */
	void delete(String id);

	/**
	 * 添加/修改关系<br/>
	 * 此方法会检查objId0和objId1的依赖是否存在，有就更新，没有就插入
	 * 
	 * @param p
	 * @return
	 */
	ReplyInfo<Object> save(SoaNexus p);

	/**
	 * 获取关系
	 * 
	 * @param id
	 * @return
	 */
	SoaNexus get(String id);

	/**
	 * 批量保存（先全部删除）
	 * 
	 * @param id
	 * @param nLt
	 */
	void save(String id, List<SoaNexus> nLt);

	/**
	 * 查询某个组件或流程的依赖项
	 * 
	 * @param objId0
	 * @return
	 */
	List<SoaNexus> listByMe(String objId0);

	/**
	 * 查询依赖某个组件的组件或流程
	 * 
	 * @param objId1
	 * @return
	 */
	List<SoaNexus> listOnMe(String objId1);

	/**
	 * 查询某个组件或流程的依赖项
	 * 
	 * @param objId0
	 * @return
	 */
	List<SoaNexus> listByMe(String objId0, String group);

	/**
	 * 查询依赖某个组件的组件或流程
	 * 
	 * @param objId1
	 * @return
	 */
	List<SoaNexus> listOnMe(String objId1, String group);

	/**
	 * 查询关系，暂时未使用
	 * 
	 * @param objType0
	 * @param objId0
	 * @param objType1
	 * @param objId1
	 * @param key
	 * @param orderBy
	 * @param pageNo
	 * @param pageSize
	 * @return
	 */
	PagedResult<SoaNexus> list(String objType0, String objId0, String objType1, String objId1, String key, String orderBy,
			int pageNo, int pageSize);

	List<SoaNexus> list(String objType0, String objId0, String group0, String objType1, String objId1, String group1);

	void getReferences(SoaNexus z, List<SoaNexus> nLt, Map<String, SoaNexus> map);

	ReplyInfo<Object> update(SoaNexus p);
}
